<?php
/**
 * @Description 
 * @Sonkwl Xiong
 * @Date 2022/08/10 11:13:13
 */
class autodcl{
    static private $path='model/php/';
    static private $class='';//类名
    static private $data=array();//数据
    static private $sql=array();//dcl语句
    static private $errArray=array(
        101=>"字数超过范围",
        102=>"不在设定范围内",
        103=>"格式不符合规定",
        104=>"必须是数字"
    );
    //设置model路径
    static public function BandPath($path){
        self::$path=$path;
        return __CLASS__;
    }
    //绑定数据
    static public function BandData($data){
        self::$data=array();
        self::$data=$data;
        return __CLASS__;
    }
    //使用类
    static public function Use($class){
        self::$class=$class;
        if(!is_file(self::$path.$class.'.php')){
            // echo 'ERROR:类'.$class.'不存在';
            jsoner::Response(array("res"=>"NG","message"=>'ERROR:类'.$class.'不存在'));
            exit;
        }
        include_once self::$path.$class.'.php';
        return __CLASS__;
    }
    //使用方法
    static public function Do($func){
        //重置数据
        if(method_exists(self::$class,'Reset')){
            call_user_func(array(self::$class,'Reset'));
        }
        //遍历验证属性
        foreach (self::$data as $key => $value) {
            if(!method_exists(self::$class,'Set_'.$key)){
                continue;
            }
            $err=call_user_func(array(self::$class,'Set_'.$key),$value);
            if($err!=1){
                // echo 'ERROR:'.self::$class."的".$key.self::$errArray[$err];
                // jsoner::Response(array("res"=>"NG","message"=>'ERROR:'.self::$class."的".$key.self::$errArray[$err]));
                jsoner::Response(array("res"=>"NG","message"=>'ERROR:'.(isset(self::$errArray[$err])?self::$errArray[$err]:$err)));
                exit;
            }
        }
        if($func=="Check"){
            //仅检查inputdata
            return __CLASS__; 
        }
        //调用方法
        array_push(self::$sql,call_user_func(array(self::$class,$func)));
        return __CLASS__;
    }
    //返回sql数据
    static public function GetSql(){
        $sql=self::$sql;
        self::$sql=array();
        return $sql;
    }
}
?>